# Zope imports
from zope.interface import Interface

# Local imports
from trackback import IBaseTrackback


class ITrackbackOutManager(IBaseTrackback):
    """Used for objects that will be the source of a trackback
    ping.  i.e. objects that want to inform remote objects of
    their existence.
    """

    def getURLsToPing():
        """Return the sequence of URLs to send trackback pings to.
        """

    def setURLsToPing(urls):
        """Set the sequence of URLs to send trackback pings to.
        """

    def getPingedURLs():
        """Return the sequence of URLs that have already been pinged.
        """

    def setPingedURLs(urls):
        """Set the sequence of URLs that have been pinged.
        """

    def sendTrackbacks():
        """Send trackback pings for context.
        """


class ITrackbackOutManagerView(Interface):
    """XXX Document me!
    """

    def editTrackbacks(unpinged_urls=None):
        """
        """

    def getEditURL():
        """Returns the URL that exposes the self.editTrackbacks method for context.
        """

    def getTrackbackOutManager():
        """Returns the ITrackbackOutManager for context.
        Hung here to make it easy to get hold of with TTW code.
        """

    def sendTrackbacks(unpinged_urls=None):
        """XXX Fill me in.
        """

    def getURLsToPingAsLines():
        """
        """
